In computing, booting, otherwise referred to as booting up is a bootstrapping process that starts an operating system when a user turns on or otherwise powers up a computer system. A boot sequence is the set of operations the computer performs when it is switched on that loads the operating system.
Most computer systems can only execute code that is stored in the system's memory, either the non-volatile memory, such as ROM or the volatile memory, such as RAM. Modem operating systems are stored on hard disks, or occasionally on secondary devices, such as USB flash memory drives or other non-volatile storage devices. When a computer system is first powered on, it does not have an operating system in memory. Since the computer's hardware, alone cannot perform complex actions such as loading an operating system program from the hard disk the computer must rely special purpose program, commonly referred to as a bootstrap loader, bootstrap or boot loader.
In conventional computing systems, the process of loading the operating system begins with the Central Processing Unit (CPU) executing software stored in the ROM. For example, in a Personal Computer the BIOS (Basic Input/Output System) program. The CPU is designed to execute the BIOS after reset without and external assistance. The primary function of the BIOS is to identify and initiate component hardware, (such as hard drives and the like). This is to prepare the computer system so other programs, such as the bootloader, stored on various media can load, execute, and assume control of the computing system.
The BIOS runs from the non-volatile memory, such as flash memory, PROM, EEPROM or the like, when the computing system is powered on. The BIOS initializes several motherboard components and peripherals including, but not limited to, the clock generator, the processors and caches, the memory controller and Input/Output (I/O) controller, system memory, peripheral component interface devices, mass storage controllers, graphics controllers and various I/O controllers, such as keyboard, mouse and the like. Finally after initializing the various components, the BIOS loads the boot loader for the operating system from the boot sector and transfers control to the boot loader. In turn, the boot loader loads the kernel of the operating system into volatile memory, such as RAM to allow for faster processing.
The time that is required to boot the system, i.e., bring the system up to a running state, is proportional to the amount of time necessary to make requests and retrieve information. Thus, the more requests for information that are made during the boot process, the longer the user has to wait for the computing system to reach a running state. While many of the information requests and information retrievals that are made during a boot process are redundant requests/retrievals that occur each time a boot occurs, some of the requests/retrievals will deviate over time as components related to the computing system are added and/or changed.
Therefore a need exists to accelerate the boot process for the purpose of mitigating the latency that a user experiences in waiting for an operating system to load. The desired system and methods should be adaptive so as to provide for acceleration of the boot process in instances in which the requests/retrievals made during the boot-up change over time.